Parameterized SQL
https://gyazo.com/ef3581a9274ef54ee348bedb5afd59d7 #Utilities Sorm4j could handle named parameters and ordered parameters like that:
/yuunkjm/--.icon
Handle parameterized SQL statement
Sorm4j basically uses simply ordered parameters. So you can simply call as the follows: code:java
List<Customer> customers = sorm.readList(Customer.class, "select * from players where id=? and name=?", 1, "Alice");
If you want to split creating SQL statement and executing it, you could use ParameterizedSql.
With Ordered Parameter
code:java
String sql = "select * from players where id=? and name=?";
// simple factory method
ParameterizedSql psql = ParameterizedSql.withOrderedParameters(sql, 9, "Alice")
// or with builder pattern
ParameterizedSql psql = ParameterizedSqlBuilder.orderedParameterBuilder(sql).addParameter(9, "Alice").build();
List<Customer> customers = sorm.readList(Customer.class, psql);
With Named Parameter
code:java
String sql = "select * from customer where id=:id and address=:address";
// simple factory method
ParameterizedSql statement = ParameterizedSql.withNamedParameters(sql, Map.of("id", 9, "address", "Kyoto"));
// or with builder pattern
ParameterizedSql statement =
ParameterizedSqlBuilder.namedParameterBuilder(sql).bind("id", 1).bind("address", "Kyoto").build();
List<Customer> customers = sorm.readList(Customer.class, statement);
/yuunkjm/--.icon
List parameter <?>
If <?> is a list, it will be converted to a sequence of ? joined comma depending on the given list size.
code:example.java
ParameterizedSql.withOrderedParameters(
"select * from customer where name address in(<?>) and id=?", List.of("Tokyo", "Kyoto"), 99);
is converted to:
sql=[select * from customer where name and address in(?,?) and id=?], parameters=[Tokyo, Kyoto, 1]